﻿/**************************************************************************
依    赖：此脚本依赖jquery运行
    
函数列表：
dyniframesize(自动调整 iframe 的高度)
autoGetParentParams(iframe 自动获取父窗口参数)
StringBuffer(String 类扩展)
sleep(模拟C# Sleep方法)
memo(Memo 效果实现)
getElementpos(得到Dom元素位置)
getinnerText(获取dom文本)
dateCompare(日期比较)
selectAllCheckBox(全选/反选 Table中的所有复选框)
radioListCheck(检查是否有选中RadioButtonList)
****************************************************************************/

//(function ($)
//{
//    $.extend({ Math: window.Math });
//    $.extend($.Math,
//    {
//    //        min: function (a, b) { return a < b ? a : b; },
//    //        max: function (a, b) { return a > b ? a : b; },
//    //        dateCompare: function (a, b)
//    //        {
//    //            var date1 = a.split("-")[1] + "/" + a.split("-")[2] + "/" + a.split("-")[0];
//    //            var date2 = b.split("-")[1] + "/" + b.split("-")[2] + "/" + b.split("-")[0];
//    //            if (Date.parse(date1) > Date.parse(date2)) return 1;
//    //            else if (Date.parse(date1) == Date.parse(date2)) return 0;
//    //            else return -1;
//    //        },
//    //        getinnerText: function (str) { return $("<div></div>").wrapInner(str).text(); }
//});
//})(jQuery);

(function ($)
{
    $.extend(window.String.prototype,
    {
        trim: function () { alert(1); return $.trim(this); },
        IsInt: function ()
        {
            return /^\d+$/.test(this);
        }
    });

})(jQuery);


///**********************************
//*
//*  Memo 效果实现
//* 
//**********************************/
//(function ($)
//{
//    $.fn.memo = function (options)
//    {
//        var options = $.extend({}, $.fn.memo.defaults, options);
//        return this.each(function ()
//        {
//            var $this = $(this);
//            var o = $.meta ? $.extend({}, options, $this.data()) : options;
//            var tagName = $this.attr("tagName");
//            var isTxtBox = tagName == "INPUT" && $this.attr("type") == "text";
//            var isTxtArea = tagName == "TEXTAREA";
//            if (!(isTxtBox || isTxtArea)) return;

//            $this.focus(function ()
//            {
//                if ($this.val() == options.defaultValue)
//                {
//                    $this.val("");
//                    $this.css("color", "#000");
//                }
//            });
//            $this.blur(function ()
//            {
//                if ($this.val() == "" || $this.val() == options.defaultValue)
//                {
//                    $this.val(options.defaultValue);
//                    $this.css("color", options.hintcolor);
//                }
//            });
//        });
//    };

//    $.fn.memo.defaults =
//    {
//        defaultValue: "请输入相关信息",
//        hintcolor: "#ccc"
//    };
//})(jQuery);


///*************************************
//*
//*  Iframe 扩展
//*  自适应高度、自动获取父对象参数
//* 
//**************************************/
//(function ($)
//{
//    $.fn.iframeExtend = function (options)
//    {
//        var options = $.extend({}, $.fn.iframeExtend.defaults, options);
//        return this.each(function ()
//        {
//            var $this = $(this);
//            var o = $.meta ? $.extend({}, options, $this.data()) : options;
//            var tagName = $this.attr("tagName");
//            var isIframe = tagName == "IFRAME";
//            if (!isIframe) return;

//            if (options.adaptHeight)
//            {
//                if (options.reAdaptWhenDomChanged) window.setInterval(function () { AutoAdapt($this) }, 300);
//                else AutoAdapt($this);
//            }

//            if (options.autoGetParentParams) autoGetParentParams($this.get(0));
//        });
//    };

//    $.fn.iframeExtend.defaults =
//    {
//        adaptHeight: true,
//        reAdaptWhenDomChanged: true,
//        autoGetParentParams: true
//    };

//    function autoGetParentParams(iframeObj)
//    {
//        function getParaName(str)
//        {
//            str = $.trim(str);
//            if (str == "") return null;
//            if (str.indexOf("=") == -1) return null;
//            return str.substring(0, str.indexOf("="));
//        }

//        var paramStr = window.location.search;
//        paramStr = $.trim(paramStr);
//        if (paramStr == "") return;
//        var params = [];
//        if (paramStr.charAt(0) == "?")
//        {
//            params = paramStr.substr(1).split('&');
//        }

//        var ifrSrc = iframeObj.src;
//        ifrSrc = $.trim(ifrSrc);
//        if (ifrSrc == "") return;
//        var ifrParams = [];
//        if (ifrSrc.indexOf("?") != -1)
//        {
//            var ifrSrcSearch;
//            ifrSrcSearch = ifrSrc.substr(ifrSrc.indexOf("?") + 1);
//            ifrParams = ifrSrcSearch.split('&');

//            for (var i = 0; i < params.length; i++)
//            {
//                var flag = true;
//                for (var j = 0; j < ifrParams.length; j++)
//                {
//                    if (getParaName(params[i]) == getParaName(ifrParams[j]))
//                    {
//                        flag = false;
//                        break;
//                    }
//                }

//                if (flag)
//                {
//                    ifrSrc += "&" + params[i];
//                }
//            }
//        }
//        else
//        {
//            ifrSrc += paramStr
//        }

//        iframeObj.src = ifrSrc;
//    }

//    function AutoAdapt(iframeObj)
//    {
//        try
//        {
//            //跨域时会出现 “拒绝访问” 脚本错误
//            iframeObj.attr("height", $(iframeObj.get(0).contentWindow.document.body).outerHeight(true))
//        }
//        catch (e) { }
//    }
//})(jQuery);



/************************** 函数实现************************************/

/********************
String 类扩展
类似C# StringBuilder
*********************/
function StringBuffer()
{
    this._strings_ = new Array;
}

StringBuffer.prototype.append = function(str)
{
    this._strings_.push(str);
};

StringBuffer.prototype.toString = function()
{
    return this._strings_.join("");
};

/*****************
模拟C# Sleep方法
******************/
function sleep(milisecond)
{
    var currentDate, beginDate = new Date();
    var beginHour, beginMinute, beginSecond, beginMs;
    var hourGaps, minuteGaps, secondGaps, msGaps, gaps;
    beginHour = beginDate.getHours();
    beginMinute = beginDate.getMinutes();
    beginSecond = beginDate.getSeconds();
    beginMs = beginDate.getMilliseconds();
    do
    {
        currentDate = new Date();
        hourGaps = currentDate.getHours() - beginHour;
        minuteGaps = currentDate.getMinutes() - beginMinute;
        secondGaps = currentDate.getSeconds() - beginSecond;
        msGaps = currentDate.getMilliseconds() - beginMs;
        if (hourGaps < 0) hourGaps += 24;
        gaps = hourGaps * 3600 + minuteGaps * 60 + secondGaps;
        gaps = gaps * 1000 + msGaps
    }
    while (gaps < milisecond)
}

/*****************************************************
得到Dom元素位置
e        ： dom元素
recursion： 是否递归获取（适用于iframe嵌套的页面）
******************************************************/
function getElementpos(e, recursion)
{
    if (recursion != true) recursion = false;
    var pos = getElementPosition(e);

    if (recursion)
    {
        var win = window;
        while (win != win.parent && win.frameElement != null)
        {
            var ifr = win.frameElement;
            var tmpPos = getElementPosition(ifr);
            pos.left += tmpPos.left;
            pos.top += tmpPos.top;
            win = win.parent;
            ifr = win.frameElement;
        }
    }

    function getElementPosition(element)
    {
        var je = $(element);
        var t = je.offset().top;
        var l = je.offset().left;
        var w = je.outerWidth(true);
        var h = je.outerHeight(true);

        return { top: t, left: l, width: w, height: h }
    }

    return pos;
};

/*************************************
全选/反选 Table中的所有复选框
chk       : 事件复选框对象
tableName : table对象
**************************************/
function selectAllCheckBox(chk, table)
{
    var checked = chk.checked;
    var chkboxs = table.getElementsByTagName("INPUT");
    for (var i = 0; i < chkboxs.length; i++)
    {
        if (chkboxs[i].type == "checkbox")
        {
            chkboxs[i].checked = checked;
        }
    }
}

/*************************************
检查是否有选中RadioButtonList
未选中，返回false；有选中，返回true
**************************************/
function radioListCheck(radioListId)
{
    var JRadioList = $("#" + radioListId);
    var checkedRadios = JRadioList.find("input[type=radio][checked=true]");
    if (checkedRadios.length == 0)
    {
        return false;
    }

    return true;
}